Modern communications networks comprise network devices that transport data through a network. The network devices may include routers, switches, bridges, or combinations thereof that transport individual data packets or frames through the network. A device may forward a plurality of packets that correspond to different sessions or data flows. The packets of different sessions or flows can be received over a plurality of ingress ports and forwarded over a plurality of egress ports of the device. Additionally, the packets in different flows for different users may be queued or cached in corresponding buffers for some time before being processed by the device. One or more traffic schedulers and/or shapers may be used in a network device to coordinate processing and forwarding of the incoming packets for different users.
Traffic management (TM) of data flows may be accomplished by architectures that facilitate a purely or primarily hardware implementation, e.g., using application specific integrated circuits (ASICs). Such architectures may be referred to as “hardware TM”. On the other hand, TM may be accomplished by architectures that are a combination of hardware and software, and such architectures may be referred to as “software TM.” Although faster than software TM, hardware TM may have potential disadvantages. For example, hardware TM may require hardware management buffers, which may be more expensive than, e.g., double data rate (DDR) memories. On the other hand, DDR memories may be used in software TM, which may be more flexible than hardware TM.
However, the performance of software TM may be sensitive to central processing unit (CPU) resources, thus insufficient or depleting CPU resources may cause a decline in throughput. Further, the implementation of today's packet scheduling may be limited to a single thread, thus a throughput may drop as the number of packet flows increase. These current implementations may need modifications to accommodate implementation in a multi-core environment, which is now widely used in communication systems.